Methods for programming flash memory devices using variable initial program loops and related devices

ABSTRACT

A method of programming a nonvolatile memory device including a plurality of memory cells includes providing a plurality of program loops having a corresponding plurality of program voltages associated therewith. A first one of the plurality of program loops is activated to generate a first program voltage to program a first one of the plurality of memory cells. A second one of the plurality of program loops is activated to generate a second program voltage to program a second one of the plurality of memory cells. Related devices are also discussed.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority from Korean Patent Application No. 10-2005-0081355, filed on Sep. 1, 2005, in the Korean Intellectual Property Office, the disclosure of which is hereby incorporated by reference herein in its entirety.

FIELD OF THE INVENTION

The present invention relates to a semiconductor memory devices, and more particularly, to non-volatile memory devices and methods for programming the same.

BACKGROUND OF THE INVENTION

A flash memory device may be programmed and erased by storing charges in a floating gate and by discharging the charges stored in the floating gate into a channel using a tunneling effect. Such a program and erase system may provide improved data retention characteristics. In addition, since flash memory devices may offer advantages such as higher integration, lower power consumption, and/or greater durability against external impact, they may be increasingly used as auxiliary memory devices, for example, in a mobile apparatus and/or other applications.

FIG. 1 is a cross-sectional view illustrating a conventional cell structure of a flash memory device. Referring to FIG. 1, the conventional flash memory cell includes a control gate CG, a floating gate FG, and a source and a drain formed in a bulk substrate or a p-well.

A channel may be defined in the bulk substrate or the p-well between the drain and the source. Between the control gate CG and the floating gate FG, a dielectric layer is formed, which may include an oxide layer/a nitride layer/an oxide (ONO) layer having a relatively high capacitance. Also a tunnel oxide layer having a predetermined configuration that is suitable for Fowler-Nordheim (F-N) tunneling is formed between the floating gate FG and the bulk substrate. In such a cell structure, there may be a dielectric capacitance (C_(ONO)) due to the dielectric layer between the control gate CG and the floating gate FG, and a tunnel capacitance (C_(tun)) due to the tunnel oxide layer between the floating gate FG and the p-well. The voltage of the floating gate FG may be determined by a coupling ratio between a word line voltage V_(WL) applied to the control gate CG and the capacitances C_(ONO) and C_(tun). In other words, the word line voltage V_(WL) for the program, erase, and/or read operations may be divided by the capacitances. Also, the dielectric capacitance C_(ONO) may include a capacitance component due to adjacent transistors, as well as the capacitance between the gates CG and FG. Likewise, the tunnel capacitance C_(tun) may include a capacitance component due to the adjacent transistors, as well as the capacitance between the floating gate FG and the bulk substrate. As such, the electric field between the floating gate FG and the bulk substrate (or the p-well) inducing the F-N tunneling in a programming operation may depend on the word line voltage V_(WL) divided according to the magnitudes of the dielectric capacitance C_(ONO) and the tunnel capacitance C_(tun). A voltage V_(tun) applied between the floating gate FG and the bulk may be represented by Eq. (1) below. V _(tun) =V _(WL) ×α _(couple)   Eq. (1)

where, α_(couple) denotes a coupling ratio.

Further, the coupling ratio α_(couple) may be represented as Eq. (2). $\begin{matrix} {\alpha_{couple} = \frac{C_{ONO}}{C_{ONO} + C_{tun}}} & {{Eq}.\quad(2)} \end{matrix}$

Based on Eqs. 1 and 2, the magnitude of the tunneling voltage V_(tun) (i.e., the floating gate voltage), which may effect the F-N tunneling in the programming operation, may largely depend upon the magnitude of the coupling ratio a couple. Also, it may be difficult and/or impossible to fabricate memory cells in the same string/row of a NAND flash memory all having the same coupling ratio a couple. More particularly, cells directly adjacent to a string select line (SSL) and/or a ground select line (GSL) in each string may have higher or lower coupling ratios than the coupling ratios of other cells. For example, because the capacitance of each cell may also incorporate a capacitance component of an adjacent cell, the capacitance component between cells in the string structure may be different from the capacitance component between the outermost cells of the string structure and the select transistors. Therefore, although the same voltage may be applied to the respective word lines, the floating gate voltage V_(tun) (i.e., the tunneling voltage) induced in cells adjacent to the SSL/GSL may be different from the floating gate voltage V_(tun) induced to other cells. Considering that program speed may depend on the magnitude of the floating gate voltage V_(tun), the program speed of the memory cells may vary with the location of the respective word lines.

SUMMARY OF THE INVENTION

Some embodiments of the present invention may provide flash memory devices capable of setting different word line voltages according to a location of a word line in a memory cell array, to substantially equalize the programming time between the cells of the array.

According to some embodiments of the present invention, nonvolatile memory devices having a plurality of word lines may include a first storage circuit configured to store a first start voltage information with a program pulse applied to the plurality of the word lines, a second storage circuit configured to store a second start voltage information with a program pulse to be applied to at least one word line among the plurality of the word lines, and a program voltage generator configured to generate a program start voltage of the at least one word line based on the second start voltage information when the at least one word line is selected by an input address.

In some embodiments, the first and second storage circuits may include a fuse box.

In other embodiments, the first and second storage circuits may include registers.

In further embodiments, the at least one word line may be different in program speed from the other word lines among the plurality of word lines.

In yet other embodiments, the at least one word line may be immediately adjacent to one of a string select line (SSL) and a ground select line (GSL).

In yet further embodiments, the second start voltage information may be a difference value formed on the basis of the first start voltage information.

In some embodiments, the difference value may be a set value for adding a predetermined voltage to the first start voltage information in case that the program speed of the at least one word line is slower than those of other word lines.

In other embodiments, the difference value may be a set value for subtracting a predetermined voltage from the first start voltage information in case that the program speed of the at least one word line is faster than those of other word lines.

In further embodiments, the program voltage generator may further include an address detection circuit configured to detect an address corresponding to the at least one word line among program addresses.

In yet other embodiments of the present invention, the memory devices may further include a row decoder configured to apply a step pulse voltage to a selected word line. The step pulse voltage may be increased step by step from the first start voltage information or the second start voltage information.

According to other embodiments of the present invention, nonvolatile memory devices having a plurality of word lines may include a row decoder configured to drive a selected word line with a word line voltage, a first storage circuit configured to store a first start voltage data, a second storage circuit configured to store an add-subtract data, an add-subtract circuit configured to output the first start voltage data or a second start voltage data in which the add-subtract data is applied to the first start voltage data, in response to an input address, a loop counter configured to use the output data of the add-subtract circuit as a count start value, and a voltage generator configured to generate a program voltage corresponding to a count value of the loop counter as a word line voltage. The counter value of the loop counter increases step by step.

In other embodiments, the plurality of the word lines may include at least one word line in which a program voltage generated from the second start voltage data may be used as a program start voltage.

In further embodiments, the first start voltage data may be a program start voltage data used to program of word lines except the at least one word line among the plurality of the word lines.

In yet other embodiments, the second start voltage data may be set such that the number of the program loops of the at least one word line may be identical to those of the word lines using the first start voltage data.

In yet further embodiments, the add-subtract circuit may further include a match signal generation unit configured to output a match signal by detecting whether or not an address of the word line selected for the program is an address of the at least one word line.

In some embodiments, the add-subtract circuit may transfer the first start voltage data as an initial value to the loop counter in response to a deactivation of the match signal.

In other embodiments, the add-subtract circuit may transfer the second start voltage data as an initial value to the loop counter in response to an activation of the match signal.

In further embodiments, the loop counter may further include a decoder configured to decode the count value and provide the decoded count value as a level control signal of the word line voltage generator.

In yet other embodiments of the present invention, the memory devices may further include a control logic configured to activate a count operation of the loop counter while performing a program operation, initialize the loop counter when the program operation is completed, and load the first or second start voltage data to the loop counter.

According to further embodiments of the present invention, a method of programming a nonvolatile memory device having a plurality of word lines may include storing first start voltage information for a program pulse to be applied to the plurality of the word lines, storing second start voltage information for a program pulse to be applied to at least one word line among the plurality of word lines, and generating a program start voltage for the at least one word line based on the first and second start voltage information when the at least one word line is selected by an input address.

In other embodiments, the at least one word line may be different in program speed from the other word lines among the plurality of word lines.

In further embodiments, the at least one word line may be adjacent to one of a string select line (SSL) and a ground select line (GSL).

In yet other embodiments, the second start voltage information may be information with respect to a level difference which is set such that a predetermined voltage level may be added/subtracted to/from the first start voltage information.

In yet further embodiments, the predetermined voltage level may be a step voltage configured to equalize the program speed of the at least one word line with the program speeds of other word lines.

In other embodiments, the program pulse may provide a selected word line with a step pulse which increases step by step from a voltage initialized by the first or second start voltage information.

According to further embodiments of the present invention, a method of programming a nonvolatile memory device including a plurality of memory cells therein may include providing a plurality of program loops having a corresponding plurality of program voltages associated therewith. A first one of the plurality of program loops may be activated to generate a first program voltage to program a first one of the plurality of memory cells, while a second one of the plurality of program loops may be activated to generate a second program voltage to program a second one of the plurality of memory cells.

In some embodiments, responsive to selection of the first one of the plurality of memory cells for programming, a first loop initial value may be provided corresponding to the first one of the plurality of program loops. As such, ones of the plurality of program loops may be activated in a predetermined sequence based on the first loop initial value to generate a first series of program voltages. In addition, responsive to selection of the second one of the plurality of memory cells for programming, a second loop initial value may be provided corresponding to the second one of the plurality of program loops. Accordingly, ones of the plurality of program loops may be activated in the predetermined sequence based on the second loop initial value to generate a second series of program voltages.

In other embodiments, the second loop initial value may be provided by offsetting the first loop initial value based on a loop offset value. The loop offset value may specify a predetermined number of the plurality of program loops to be offset in the predetermined sequence.

In some embodiments, the second one of the plurality of memory cells may have a different program speed than the first one of the plurality of memory cells. As such, ones of the plurality of program loops may be activated in the predetermined sequence based on the second loop initial value to substantially equalize respective programming times for the first and second ones of the plurality of memory cells. For example, when the program speed of the second one of the plurality of memory cells is less than that of the first one of the plurality of memory cells, the loop offset value may be added to the first loop initial value to provide the second loop initial value to reduce a total number of program loops for programming the second one of the plurality of memory cells. In addition, when the program speed of the second one of the plurality of memory cells is greater than that of the first one of the plurality of memory cells, the loop offset value may be subtracted from the first loop initial value to provide the second loop initial value to increase a total number of program loops for programming the second one of the plurality of memory cells.

In other embodiments, a first number of program loops to program the first one of the plurality of memory cells in the predetermined sequence may be calculated based on the first loop initial value, and a second number of program loops to program the second one of the plurality of memory cells in the predetermined sequence may be calculated based on the first loop initial value. As such, the loop offset value may be determined based on a difference between the first number of program loops and the second number of program loops to substantially equalize respective programming times for the first and second ones of the plurality of memory cells.

In some embodiments, the second one of the plurality of program loops may be activated responsive to selection of the second one of the plurality of memory cells for programming and based on a location of the second one of the plurality of memory cells relative to that of the first one of the plurality of memory cells.

In other embodiments, the plurality of memory cells may be a plurality of NAND flash memory cells in a string arrangement between first and second select transistors and the second one of the plurality of memory cells may be immediately adjacent to the first select transistor and/or the second select transistor. As such, the second one of the plurality of program loops may be activated responsive to selection of the second one of the plurality of memory cells for programming.

According to still further embodiments of the present invention, a non-volatile memory device may include a memory cell array including a plurality of memory cells and a plurality of word lines respectively connected thereto, a word line voltage generator including a plurality of program loops therein, and a loop selection circuit. The word line voltage generator may be configured to generate a plurality of program voltages responsive to activation of corresponding ones of the plurality of program loops. The loop selection circuit may be configured to activate a first one of the plurality of program loops to generate a first program voltage to program a first one of the plurality of memory cells, and may be configured to activate a second one of the plurality of program loops to generate a second program voltage to program a second one of the plurality of memory cells.

In some embodiments, the loop selection circuit may be configured to activate ones of the plurality of program loops in a predetermined sequence based on a loop initial value to generate a series of program voltages. The memory device may further include an add-subtract circuit that may be configured to provide a first loop initial value to the loop selection circuit corresponding to the first one of the plurality of program loops to generate a first series of program voltages responsive to selection of the first one of the plurality of memory cells for programming. The add-subtract circuit may also be configured to provide a second loop initial value to the loop selection circuit corresponding to the second one of the plurality of program loops to generate a second series of program voltages responsive to selection of the second one of the plurality of memory cells for programming.

In other embodiments, the add-subtract circuit may be configured to offset the first loop initial value based on a loop offset value to provide the second loop initial value. The loop offset value may specify a predetermined number of the plurality of program loops to be offset in the predetermined sequence.

In some embodiments, the second one of the plurality of memory cells may have a different program speed than the first one of the plurality of memory cells. As such, the loop selection circuit may be configured to activate the ones of the plurality of program loops in the predetermined sequence based on the second loop initial value to substantially equalize respective programming times for the first and second ones of the plurality of memory cells. For example, when the program speed of the second one of the plurality of memory cells is less than that of the first one of the plurality of memory cells, the add-subtract circuit may be configured to add the loop offset value to the first loop initial value to provide the second loop initial value to reduce a total number of program loops for programming the second one of the plurality of memory cells. In addition, when the program speed of the second one of the plurality of memory cells is greater than that of the first one of the plurality of memory cells, the add-subtract circuit may be configured to subtract the loop offset value from the first loop initial value to provide the second loop initial value to increase a total number of program loops for programming the second one of the plurality of memory cells.

In other embodiments, the memory device may include a test circuit. The test circuit may be configured to calculate a first number of program loops to program the first one of the plurality of memory cells in the predetermined sequence based on the first loop initial value, and to calculate a second number of program loops to program the second one of the plurality of memory cells in the predetermined sequence based on the first loop initial value. The test circuit may be further configured to determine the loop offset value based on a difference between the first number of program loops and the second number of program loops to substantially equalize respective programming times for the first and second ones of the plurality of memory cells.

In some embodiments, the memory device may further include a first storage circuit and a second storage circuit. The first storage circuit may be configured to provide the first loop initial value to the add-subtract circuit. For example, the first storage circuit may include one or more fuses and/or registers configured to provide the first loop initial value.

The second storage circuit may be configured to provide the loop offset value to the add-subtract circuit. For instance, the second storage circuit may include one or more fuses and/or registers configured to provide the loop offset value.

In other embodiments, the memory device may include a match circuit configured to provide a signal to the add-subtract circuit indicating a location of the second one of the plurality of memory cells in the memory cell array. The add-subtract circuit may be configured to provide the second loop initial value based on the location of the second one of the plurality of memory cells in the memory cell array. For example, the plurality of memory cells may be a plurality of NAND flash memory cells in a string arrangement between first and second select transistors, and the second one of the plurality of memory cells may be immediately adjacent to the first select transistor and/or the second select transistor. As such, the add-subtract circuit may be configured to provide the second loop initial value based on selection of the second one of the plurality of memory cells immediately adjacent to the first and or second select transistors.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a cross-sectional view illustrating a conventional nonvolatile memory cell;

FIG. 2 is a block diagram illustrating a flash memory device according to some embodiments of the present invention;

FIG. 3 is a block diagram illustrating the match signal generation unit of FIG. 2 according to some embodiments of the present invention;

FIG. 4 is a block diagram illustrating the first storage circuit, the add-subtract circuit, the loop counter, and the decoder of FIG. 2 according to some embodiments of the present invention;

FIG. 5 is a block diagram illustrating the add-subtract circuit of FIG. 4 according to some embodiments of the present invention;

FIG. 6 is a circuit diagram of a word line voltage generator according to some embodiments of the present invention;

FIGS. 7 and 8 are graphs illustrating program voltage waveforms for a plurality of memory cells according to some embodiments of the present invention.

DETAILED DESCRIPTION OF EMBODIMENTS OF THE INVENTION

The present invention now will be described more fully hereinafter with reference to the accompanying drawings, in which embodiments of the invention are shown. This invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. In the drawings, the size and relative sizes of layers and regions may be exaggerated for clarity. Like numbers refer to like elements throughout.

It will be understood that when an element is referred to as being “connected” or “coupled” to another element, it can be directly connected or coupled to the other element or intervening elements may be present. In contrast, when an element is referred to as being “directly connected” or “directly coupled” to another element, there are no intervening elements present. As used herein, the term “and/or” includes any and all combinations of one or more of the associated listed items and may be abbreviated as “/”.

It will be understood that, although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first signal could be termed a second signal, and, similarly, a second signal could be termed a first signal without departing from the teachings of the disclosure.

The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” or “includes” and/or “including” when used in this specification, specify the presence of stated features, regions, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, regions, integers, steps, operations, elements, components, and/or groups thereof.

Unless otherwise defined, all terms (including technical and scientific terms) used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. It will be further understood that terms, such as those defined in commonly used dictionaries, should be interpreted as having a meaning that is consistent with their meaning in the context of the relevant art and/or the present application, and will not be interpreted in an idealized or overly formal sense unless expressly so defined herein.

FIG. 2 is a block diagram of a flash memory device according to some embodiments of the present invention. Referring now to FIG. 2, the memory device includes a memory core 10, a Y-gate 20, a pass/fail check/test circuit 30, a control logic circuit 40, a match signal generation unit 50, a first storage circuit 60, a second storage circuit 70, an add-subtract circuit 80, a loop counter/selection circuit 90, a decoder 100, and a word line voltage generator 110. The pass/fail check circuit 30 is configured to detect whether a programming operation (for each program loop) passes or fails, that is, whether a selected memory cell has been successfully programmed. The control logic 40 is configured to determine whether the current program loop should be incremented to select and/or activate the next program loop in a predetermined sequence according to the detection result from the pass/fail check circuit 30. The match signal generation unit 50 is configured to detect whether a selected word line to be programmed is a word line directly adjacent to a string select line (SSL) and/or a ground select line (GSL) coupled to a select transistor.

The first storage circuit 60 stores a loop initial value for setting an initial program voltage to be applied to a word line selected in a first program loop. The second storage circuit 70 stores an add-subtract value (i.e., an offset value) for the loop initial value, to be used for programming word lines directly adjacent to the SSL/GSL. In particular, the add-subtract circuit 80 is configured to add or subtract the add-subtract/offset value to/from the loop initial value provided by the first storage circuit 60 according to the output signal of the match signal generation unit 50. The loop counter/selection circuit 90 is initialized based on the output value of the add-subtract circuit 80. The decoder 100 is configured to decode the output of the loop counter 90. The word line voltage generator 110 is configured to generate a program voltage according to the output of the decoder 100.

Through the above operations, a memory device according to some embodiments of the present invention can vary a program start voltage for word lines that are immediately adjacent to the SSL and/or GSL.

The memory core 10 includes a memory cell array, a row decoder, and a page buffer. More particularly, the memory cell array includes a plurality of memory cells arranged in rows (word lines) and columns (bit lines). The row decoder selects one of the rows in response to an input address, and drives the selected row with a program voltage V_(PGM) applied from the word line voltage generator 110. The page buffer drives the columns with a program voltage or a program inhibit voltage, according to program data in the programming operation. Although not shown in the drawings, the page buffer may include a plurality of registers. The memory cell array includes a plurality of memory blocks. Each memory block, for example, may incorporate 32 word lines therein.

The Y-gate 20 selects columns (i.e., registers of the page buffer) in predetermined units in response to a column address. In a programming operation, program data bits are stored in selected registers through the Y-gate 20. Meanwhile, in a read operation, the data bits of the selected registers are externally provided through the Y-gate 20. In a verification operation, the data bits of the selected registers are transferred to the pass/fail check circuit 30 through the Y-gate 20. The pass/fail check circuit 30 checks to determine whether all the data bits transferred via the Y-gate 20 are pass data bits, and then outputs a pass/fail signal PF to the logic circuit 40 as the check result.

The control logic 40 controls whether the current program loop should be continued or terminated (so as to stop applying the current program voltage to the selected word line), according to the pass/fail check signal PF transferred from the pass/fail check circuit 30. For example, because some of the individual memory cells of the memory device may have different threshold voltages, a programming signal/pulse having a relatively low initial voltage value may be applied to each cell. The programmed state of the cell may then be checked to verify whether the programming operation was successful.

If the programming operation was not successful, the voltage of the programming signal/pulse may be increased from the initial voltage value (for example, in predetermined voltage increments), and the programming and verification operations may be repeated.

For instance, when the pass/fail signal PF represents a program fail, the control logic 40 stops the verification operation of the current program loop and activates a next program loop. More particularly, the control logic 40 generates a count-up signal CNT_up having a single pulse. The current program loop number of the loop counter 90 is increased based on the count-up signal CNT_up provided by the control logic 40. In addition, before applying the program voltage, the control logic 40 generates a loop set signal Loop_set to initialize a program start voltage, and transfers the loop set signal Loop_set to the first storage circuit 60. Also, the control logic 40 generates a reset signal (not shown) used to control a reset operation of the loop counter 90, before applying the program voltage and/or after terminating the current program loop.

The match signal generation unit 50 detects whether an input row address RA designates a word line immediately adjacent to the SSL and/or the GSL, and activates a match signal MATCH based on the detection result. For example, if the word line selected by the input row address is directly adjacent to the SSL and/or GSL, the match signal MATCH is provided at a logic “high” level. On the other hand, if the word line selected by the input row address is not directly adjacent to the SSL and/or GSL, the match signal 10 MATCH is provided at a logic “low” level.

The first storage circuit 60 stores a loop initial value used to select a program start voltage corresponding to the first program loop. The loop initial value may be set based on test information evaluated in a wafer level test. For example, the loop initial value may be set such that the first program loop in a predetermined sequence is variable, as will be described in detail below. The initial value of the loop counter 90 is varied based on the loop initial value. By selecting a different initial program loop based on the characteristics of a particular memory cell, it may be possible to substantially equalize the number of the program loops required to successfully program the cells of the memory device. More particularly, the first storage circuit 60 stores the loop initial value corresponding to the program start voltage for the word line as determined based on the test information, and outputs the loop initial value in response to the loop set signal Loop_set in the program operation. The loop initial value is used as the initial value of the loop counter 90, and the first program loop to be activated for the selected word line is determined by the loop initial value. It will be apparent to those skilled in the art that the first storage circuit 60 is not limited to the embodiments disclosed herein.

The second storage circuit 70 stores add-subtract/offset information indicating whether the program voltage for word lines directly adjacent to the SSL and/or GSL will be set to a program voltage corresponding to the loop initial value stored in the first storage circuit 60. In other words, the add-subtract/offset information indicates whether the program start voltage for the word lines directly adjacent to the SSL and/or GSL should be identical to, higher than, or lower than the voltage corresponding to the loop initial value. The add-subtract formation is stored in the second storage circuit 70 as add-subtract step/loop offset information.

The magnitude of the add-subtract step/loop offset value is determined by the program speed of a memory cell having a word line adjacent to the SSL and/or GSL. For instance, the number of program loops that may be required to successfully program the memory cell coupled to the word line directly adjacent to the SSL and/or GSL may be measured in a test operation. Likewise, the number of program loops that may be required to successfully program respective memory cells coupled to other word lines may also be calculated. On the basis of the measured numbers of program loops, the magnitude of the add-subtract step/loop offset value with regard to the word line directly adjacent to the SSL and/or GSL may be determined. If the program speed of memory cell coupled to the word line immediately adjacent to the SSL and/or GSL is greater than the program speed of the other memory cells, the add-subtract step/loop offset information stored in the second storage circuit 70 is provided, such that a predetermined number of program loops is added to the loop initial value stored in the first storage circuit 60. Therefore, it may be possible to set the number of the program loops required to program all the word lines to be substantially equal, by adjusting the initial loop value to provide a variable program start voltage according to the locations of the word lines, which may enhance the program speed of the memory device. The second storage circuit 70 may be configured to include a fuse box and/or a register. Exemplary operation of the second storage circuit 70 storing 4-bit data will be described with reference to Table 1. TABLE 1 Add-Subtract AS<4> AS<3> AS<2> AS<1> Step 0 0 0 0 0 0 0 0 1 +1 0 0 1 0 +2 0 0 1 1 +3 0 1 0 0 +4 0 1 0 1 +5 0 1 1 0 +6 0 1 1 1 +7 1 0 0 0 0 1 0 0 1 −1 1 0 1 0 −2 1 0 1 1 −3 1 1 0 0 −4 1 1 0 1 −5 1 1 1 0 −6 1 1 1 1 −7

As shown in Table 1, the 4-bit add-subtract data AS<4:1> includes add-subtract data AS<4> corresponding to an uppermost bit, which is used to determine whether addition or subtraction should be performed. The other three-bits denote the magnitude of the add-subtract step/loop offset value.

The add-subtract circuit 80 outputs the initial value SET of the loop counter 90 in response to the loop initial value F, the add-subtract offset/step value AS, and the match signal MATCH. If the match signal MATCH is deactivated (i.e., if the selected word line is not directly adjacent to the SSL and/or GSL), the add-subtract circuit 80 outputs the output of the first storage circuit 60 as the initial value SET of the loop counter 90. On the other hand, if the match signal MATCH is activated (i.e., if the selected word line is directly adjacent to the SSL and/or GSL), the add-subtract circuit 80 adjusts the loop initial value F of the first storage circuit 60 according to the add-subtract step/loop offset value AS, and outputs the adjusted value as the initial value SET of the loop counter 90.

The loop counter 90 is initialized by the output SET of the add-subtract circuit 80. That is, an initial program loop number of the loop counter 90 is set by the output SET of the add-subtract circuit 80. The loop counter 90 increments the program loop number in response to the count-up signal CNT_up received from the control logic 40.

The decoder 100 decodes the output of the loop counter 90 and activates a corresponding loop counting signal Loop<i>. The word line voltage generator 110 generates a program voltage having a magnitude corresponding to the program loop activated by the loop counting signal Loop<i>. Thereafter, the program voltage is transferred to the row decoder of the memory core 10.

As described above, the program start voltages for the word lines are determined by the loop initial value, which is used to activate the program loops of the word line voltage generator in a predetermined sequence. In addition, the determined loop initial value (and thus, the starting program loop for the programming operation) may be increased/reduced according to whether the word line directly adjacent to the SSL/GSL is selected.

FIG. 3 is a block diagram schematically illustrating the match signal generation unit 50 of FIG. 2. Referring to FIG. 3, the match signal generation unit 50 is configured to detect whether the row address RA is an address designating a word line directly adjacent to the SSL and/or GSL. More particularly, the match signal generation unit 50 stores address information RA_WL<0> and RA_WL<31> for the word lines directly adjacent to the SSL and/or GSL, and compares the input row address RA with the stored address information. The comparators 51 and 52 output comparison results as comparison signals m1 and m2, respectively. The comparison signals m1 and m2 are input into an OR logic gate and the result is output as the match signal MATCH. For example, if the row address RA of the word line selected to be programmed is identical to one of the row addresses RA_WL<0> and RA_WL<31> corresponding to the word lines directly adjacent to the SSL and/or GSL, the match signal MATCH is activated at a logic “high” level.

FIG. 4 is a circuit diagram illustrating operations used to set the initial value of the loop counter 90 according to some embodiments of the present invention. In particular, a loop initializing operation for a plurality of word lines and a loop initializing operation for the word lines directly adjacent to the SSL and/or GSL are illustrated and described below with reference to FIG. 4.

As shown in FIG. 4, the first storage circuit 60 stores the loop initial value used to select the program loop corresponding to the program start voltage which is applied to some of the word lines. The first storage circuit 60 may be implemented using a fuse box to set the loop initial value, for example, based on test information evaluated in a testing process. More particularly, the first storage circuit 60 of FIG. 4 includes four fuse options FU01˜FU04. By selectively activating one(s) of the fuses, the initial value of the loop counter 90 may be set. If the loop set signal Loop_set of the control logic 40 is activated at a logic high level, a fuse-programmed loop initial value data F1˜F4 is output from the first storage circuit 60.

The loop initial value data F1˜F4 output in response to the activation of the loop set signal Loop_set is input into the add-subtract circuit 80. If the match signal MATCH is deactivated (i.e., is at a logic “low” level), the loop initial value data F1˜F4 is output intact. However, if the match signal MATCH is activated at a logic “high” level, the add-subtract circuit 80 outputs a predetermined value based on the loop initial value data F1˜F4 offset by the add-subtract data AS received from the second storage circuit 70. The add-subtract circuit 80 will be described below with reference to FIG. 5.

The loop counter 90 includes D-flip flops capable of performing set and reset functions. The count start value of the loop counter 90 is set by a set signal SET_1˜SET_4 output from the add-subtract circuit 80. As such, the loop counter 90 starts performing a counting operation from the count start value which is set in synchronization with the count-up signal CNT_up applied from the control logic 40. The decoder 100 decodes the binary data from each flip flop of the loop counter 90 so as to activate a particular loop counting signal Loop<i> corresponding to the counting number of the loop counter 90. For example, when the counting number of the loop counter 90 is [0011], the loop counting signal Loop<3> may be activated at a logic high level. As the count value of the loop counter 90 increases, the corresponding loop counting signal Loop<i> of the decoder 100 is sequentially activated, starting from the loop initial value provided from the add-subtract circuit 80.

Operations of a flash memory device according to some embodiments of the present invention will now be described with reference to the following example, where the fuse-programmed initial value data F1˜F4 of the first storage circuit 60 is [0011] and the add-subtract data AS<1>˜AS<4> of the second storage circuit 70 is [1010]. Also, the bit strings for the initial value data and the add-subtract data are arranged in the sequence of an upper bit to a lower bit. That is, the sequence of the initial value data is [F4 F3 F2 F1], and the sequence of the add-subtract data is [AS<4> AS<3> AS<2> AS<1>].

First, the case where the match signal MATCH is deactivated will be described. In other words, the case where the address selected for the program is not a word line immediately adjacent to the SSL and/or GSL will be discussed. At this time, the first storage circuit 60 outputs the initial value data [0011] in response to the loop set signal Loop_set. The add-subtract circuit 80 supplies the loop initial value data [0011] as the set signal SET_1˜SET_4 to the loop counter 90 unaltered, that is, without addition/subtraction of the loop offset value. In this case, each of the flip flops DFF_SR1˜DFF_SR4 is set to be [0011], and the decoder 100 may begin to be activated from the loop counting signal Loop<3>. When the count-up signal CNT_up is input to the loop counter 90 and the counting operation is started, the outputs of the decoder 100 are activated in sequence of Loop<4>, Loop<5>, Loop<6>, . . . , Loop<n>, where n is the number of the final loop which is required to successfully program the selected memory cell. As such, corresponding program loops of the word line voltage generator 110 may be activated in sequence to provide a series of program voltages starting from the loop initial value [0011].

On the other hand, when the word line selected for programming is directly adjacent to the SSL and/or GSL, the match signal MATCH is activated. The first storage circuit 60 transfers the loop initial data [0011] to the add-subtract circuit 80 in response to the loop set signal Loop_set. The add-subtract circuit 80 processes the loop initial data [0011] and the add-subtract/loop offset data [1010] in response to the activation of the match signal MATCH, and outputs the set signal SET to the loop counter 90. The uppermost bit of the add-subtract/loop offset data [1010] is a data bit indicating whether to add or subtract the remaining three bits from the loop initial data. Therefore, the add-subtract/offset data [1010] indicates that two steps (i.e., 010) are to be subtracted from the loop initial value data [0011]. The add-subtract circuit 80 outputs the subtracted data as the set signal SET_1˜SET_4 [0001]. As such, when the count-up signal CNT_up is input to the loop counter 90, the loop counter 90 counts up from a loop initial value of [0001]. As a result, the output of the decoder 100 starts by activating the loop counting signal Loop<1>, and the corresponding program start voltage is generated by the word line voltage generator 110. Accordingly, corresponding program loops of the word line voltage generator 110 may be activated in sequence to provide a series of program voltages starting from the loop initial value [0001].

However, if the add-subtract/loop offset data were added to the loop initial data, the uppermost bit of the add-subtract data AS would be set to “0” and the two steps [0010] would be added to the loop initial value data [0011], resulting in activation of the loop counting signal Loop<5>. Thus, corresponding program loops of the word line voltage generator 110 may be activated in sequence to provide a series of program voltages starting from the loop initial value [0101].

FIG. 5 is a block diagram schematically illustrating the add-subtract circuit 80 of FIG. 4. The add-subtract circuit 80 includes an adder-subtracter 81 configured to perform logic operations to add or subtract the loop initial value data F1˜F4 and the add-subtract/loop offset data AS<1>˜AS<4>, and a selection circuit 82 configured to select one between the output data S1˜S4 of the adder-subtracter 81 and the loop initial data F1˜F4. The output of the selection circuit 82 is provided as the set signal SET_1˜SET_4 to the loop counter 90.

The adder-subtracter 81 may include a 4-bit parallel adder having four full adders FA. In this case, if the uppermost bit AS<4> of the add-subtract/offset data AS is logic level “0”, the adder-subtracter 81 may operate as an adder. Vice versa, if the uppermost bit AS<4> of the add-subtract data AS is logic level “1”, the adder-subtracter 81 may operate as a subtracter. The construction and operation of the adder-subtracter 81 is well known to those of skill in the art, and as such, further description thereof will be omitted.

The selection circuit 82 selectively outputs one between the output data S1˜S4 of the adder-subtracter 81 and the loop initial value data F1˜F4 in response to whether the match signal MATCH is activated. If the match signal MATCH is at a logic “high” level, the selection circuit 82 selects the added/subtracted data S1˜S4 and applies it as the set signal SET_1˜SET_4 to the loop counter 90. However, if the match signal MATCH is at a logic “low” level, the selection circuit 82 provides the loop initial value data F1˜F4 as the set signal SET_1˜SET_4 to the loop counter 90 directly.

Thus, in the add-subtract circuit 80 described above, when the match signal MATCH is at a logic low level, the loop initial value data F1˜F4 is directly transferred to the loop counter 90 without alteration. In addition, when the match signal MATCH is at a logic high level, the loop initial value data F1˜F4 is logically processed in parallel with the add-subtract/offset data AS in the adder-subtracter 81, and the resultant data S1˜S4 is transferred to the loop counter 90.

FIG. 6 is an exemplary circuit diagram of the word line voltage generator 110 according to some embodiments of the present invention. Referring to FIG. 6, the word line voltage generator 110 includes a plurality of loops respectively configured to provide a plurality of program voltages. More specifically, the program loops respectively include resistors R(0)˜R(n) configured to be selected responsive to activation of transistors T(0)˜T(n) by the loop counting signal Loop<i>. A program voltage for each loop is based on a predetermined voltage divided by an upper resistor Ru and one of the lower resistors R(0)˜R(n) selected by the loop counting signal Loop<i>.

More particularly, the word line voltage generator 110 outputs a particular program voltage V_(PGM) in response to activation of one of the program loops by the loop counting signal Loop<i> output from the decoder 100. The program voltage V_(PGM) (which may have a voltage level difference corresponding to a predetermined step Δ V for each loop) is generated based on a voltage divider network comprising the upper resistor Ru between a first node NO1 and a second node NO2 and one of the lower resistors R(0)˜R(n) selected by the activated loop counting signal Loop<i>. In particular, a divided voltage V_(dvd) applied to the first node NO1 is input to an inverting terminal of a comparator 112, and a reference voltage V_(ref) is input to a non-inverting terminal of the comparator 112. If the divided voltage V_(dvd) is lower than the reference voltage V_(ref), a comparison signal Comp is provided at a logic high level as the output of the comparator 112. If the comparison signal Comp is activated, a high voltage generator 111 outputs a target program voltage V_(PGM) through an internal charge pumping operation. Such an operation may be successively performed according to activation of each loop counting signal Loop<i> in sequence, whereby a series of program voltages V_(PGM) having a voltage difference corresponding to the predetermined step Δ V for each loop is generated.

FIGS. 7 and 8 are waveform diagrams illustrating variability of the program start voltage according to some embodiments of the present invention. In the waveforms of FIGS. 7 and 8, it is assumed that 32 memory cells per string are provided in the memory device (i.e., the word lines directly adjacent to the SSL/GSL are WL<0> and WL<31>), and that the voltage corresponding to the output Loop<0> of the decoder 100 when the loop counter 90 is reset is 14.5 V. In addition, the magnitude of the step Δ V, i.e., the difference in the program voltage V_(PGM) between the respective loops, is 0.5 V. These assumptions are made merely for purposes of illustration, and as such, embodiments of the present invention are not to be construed as being limited to the above.

Referring to FIG. 7, program voltage waveforms are illustrated for the cases where word lines WL<1>˜WL<30> are selected for programming, where the word lines directly adjacent to the SSL and the GSL WL<0> and WL<31> are selected for programming, and where no word lines are selected. The program voltage waveforms of FIG. 7 correspond to the case where the loop initial value set in the first storage circuit 60 is [0011] (corresponding to Loop<3>), and the add-subtract data AS of the second storage circuit 70 is [1010]. The program voltage waveforms of FIG. 7 also correspond to the case where the program speeds of the word lines WL<0> and WL<31> immediately adjacent to the SSL and the GSL are greater than those of other word lines. In this case, a start loop of the word line WL<1>˜WL<30> will be Loop<3>, and the corresponding program start voltage will be 16 V. If the word lines WL<0> and WL<31> directly adjacent to the SSL and the GSL, respectively, are selected, Loop<1> (where two steps are subtracted from the loop initial value) will be the start loop. The program voltage corresponding to Loop<1> is 15 V. Therefore, in case that the word lines WL<0> and WL<31> directly adjacent to the SSL and the GSL are respectively selected and programmed, 15 V is output as the program start voltage. In case of the non-selected word line, a pass voltage V_(PASS) is applied to the non-selected word line so that programming may be inhibited.

The program voltage waveforms of FIG. 7 illustrate that the program speeds of the word line WL<0> and WL<31> directly adjacent to the SSL and the GSL are greater than that of the other word lines when a programming operation is performed using the same program start voltage. Accordingly, the number of program loops required to successfully program all the word lines may be substantially equalized by reducing the program start voltages for the word lines WL<0> and WL<31> directly adjacent to the SSL and the GSL by the predetermined increment/step 2Δ V.

FIG. 8 illustrates program voltage waveforms for each loop when the program speeds of the word lines WL<0> and WL<31> immediately adjacent to the SSL and the GSL are less than those of the other word lines. Referring to FIG. 8, the loop voltages applied to the word lines WL<0> and WL<31> directly adjacent to the SSL and the GSL are illustrated for the case where the add-subtract/offset data AS set in the second storage circuit 70 is [0010]. If the word lines WL<0> and WL<31> immediately adjacent to the SSL and the GSL, respectively, are selected for programming, the loop counting signal Loop<i> is activated starting from Loop <5>, which is 2 steps higher than the set loop of the first storage circuit 60. Thus, the program start voltage for the word lines WL<0> and WL<31> immediately adjacent to the SSL/GSL becomes 17 V, which is two steps Δ V higher than 16 V.

As described above, FIGS. 7 and 8 illustrate the setting of the loop offset value of the second storage circuit 70 and the corresponding program start voltage waveform diagram for the cases where the program speeds of the word lines WL<0> and WL<31> immediately adjacent to the SSL and the GSL, respectively, are greater and less than those of the other word lines. However, it is to be understood that it may be unnecessary to perform operations for varying the program start voltage if the program speeds for the word lines WL<0> and WL<31> immediately adjacent to the SSL and the GSL are identical to those of the other word lines. Accordingly, since some embodiments of the present invention employ the add-subtract circuit 80, the differences in the number of program loops required to successfully program and/or erase each memory cell due to non-uniform coupling ratios in a memory device can be adjusted by adding or subtracting a loop offset value to the initial program loop value based on the add-subtract/offset data. This may substantially equalize the number of program loops required to program the cells of the memory device, which may thereby increase the overall programming speed.

Accordingly, some embodiments of the present invention may equalize the number of program loops needed to successfully program each memory cell, by controlling the initial/starting loop value (and thus, the program start voltage) for the sequence of program loops used to program each word line. Therefore, it may be possible to enhance the program speed of the memory device.

While the present invention has been shown and described with reference to exemplary embodiments thereof, it will be understood by those of ordinary skill in the art that various changes in form and detail may be made herein without departing from the spirit and scope of the present invention, as defined by the following claims. 

1. A method of programming a nonvolatile memory device including a plurality of memory cells therein, the method comprising: providing a plurality of program loops having a corresponding plurality of program voltages associated therewith; activating a first one of the plurality of program loops to generate a first program voltage to program a first one of the plurality of memory cells; and activating a second one of the plurality of program loops to generate a second program voltage to program a second one of the plurality of memory cells.
 2. The method of claim 1, wherein activating the first one of the plurality of program loops comprises: providing a first loop initial value corresponding to the first one of the plurality of program loops; and activating ones of the plurality of program loops in a predetermined sequence based on the first loop initial value to generate a first series of program voltages responsive to selection of the first one of the plurality of memory cells for programming, and wherein activating the second one of the plurality of program loops comprises: providing a second loop initial value corresponding to the second one of the plurality of program loops; and activating ones of the plurality of program loops in the predetermined sequence based on the second loop initial value to generate a second series of program voltages responsive to selection of the second one of the plurality of memory cells for programming.
 3. The method of claim 2, wherein providing the second loop initial value comprises: offsetting the first loop initial value based on a loop offset value specifying a predetermined number of the plurality of program loops in the predetermined sequence.
 4. The method of claim 3, wherein the second one of the plurality of memory cells has a different program speed than the first one of the plurality of memory cells, and wherein activating the second one of the plurality of program loops comprises: activating ones of the plurality of program loops in the predetermined sequence based on the second loop initial value to substantially equalize respective programming times for the first and second ones of the plurality of memory cells.
 5. The method of claim 4, wherein the program speed of the second one of the plurality of memory cells is less than that of the first one of the plurality of memory cells, and wherein providing the second loop initial value further comprises: adding the loop offset value to the first loop initial value to provide the second loop initial value to reduce a total number of program loops for programming the second one of the plurality of memory cells.
 6. The method of claim 4, wherein the program speed of the second one of the plurality of memory cells is greater than that of the first one of the plurality of memory cells, and wherein providing the second loop initial value further comprises: subtracting the loop offset value from the first loop initial value to provide the second loop initial value to increase a total number of program loops for programming the second one of the plurality of memory cells.
 7. The method of claim 3, further comprising: calculating a first number of program loops to program the first one of the plurality of memory cells in the predetermined sequence based on the first loop initial value; calculating a second number of program loops to program the second one of the plurality of memory cells in the predetermined sequence based on the first loop initial value; and determining the loop offset value based on a difference between the first number of program loops and the second number of program loops to substantially equalize respective programming times for the first and second ones of the plurality of memory cells.
 8. The method of claim 1, wherein activating the second one of the plurality of program loops further comprises: activating the second one of the plurality of program loops responsive to selection of the second one of the plurality of memory cells for programming and based on a location of the second one of the plurality of memory cells relative to that of the first one of the plurality of memory cells.
 9. The method of claim 1, wherein the plurality of memory cells comprises a plurality of NAND flash memory cells in a string arrangement between first and second select transistors, and wherein activating the second one of the plurality of program loops further comprises: activating the second one of the plurality of program loops responsive to selection of the second one of the plurality of memory cells for programming, wherein the second one of the plurality of memory cells is immediately adjacent to the first select transistor and/or the second select transistor.
 10. A non-volatile memory device, comprising: a memory cell array comprising a plurality of memory cells and a plurality of word lines respectively connected thereto; a word line voltage generator including a plurality of program loops therein and configured to generate a plurality of program voltages responsive to activation of corresponding ones of the plurality of program loops; and a loop selection circuit configured to activate a first one of the plurality of program loops to generate a first program voltage to program a first one of the plurality of memory cells, and configured to activate a second one of the plurality of program loops to generate a second program voltage to program a second one of the plurality of memory cells.
 11. The device of claim 10, wherein the loop selection circuit is configured to activate ones of the plurality of program loops in a predetermined sequence based on a loop initial value to generate a series of program voltages, and further comprising: an add-subtract circuit configured to provide a first loop initial value to the loop selection circuit corresponding to the first one of the plurality of program loops to generate a first series of program voltages responsive to selection of the first one of the plurality of memory cells for programming, and to provide a second loop initial value to the loop selection circuit corresponding to the second one of the plurality of program loops to generate a second series of program voltages responsive to selection of the second one of the plurality of memory cells for programming.
 12. The device of claim 11, wherein the add-subtract circuit is configured to offset the first loop initial value based on a loop offset value to provide the second loop initial value, wherein the loop offset value specifies a predetermined number of the plurality of program loops to be offset in the predetermined sequence.
 13. The device of claim 12, wherein the second one of the plurality of memory cells has a different program speed than the first one of the plurality of memory cells, and wherein the loop selection circuit is configured to activate the ones of the plurality of program loops in the predetermined sequence based on the second loop initial value to substantially equalize respective programming times for the first and second ones of the plurality of memory cells.
 14. The device of claim 13, wherein the program speed of the second one of the plurality of memory cells is less than that of the first one of the plurality of memory cells, and wherein the add-subtract circuit is configured to add the loop offset value to the first loop initial value to provide the second loop initial value to reduce a total number of program loops for programming the second one of the plurality of memory cells.
 15. The device of claim 13, wherein the program speed of the second one of the plurality of memory cells is greater than that of the first one of the plurality of memory cells, and wherein the add-subtract circuit is configured to subtract the loop offset value from the first loop initial value to provide the second loop initial value to increase a total number of program loops for programming the second one of the plurality of memory cells.
 16. The device of claim 12, further comprising: a test circuit configured to calculate a first number of program loops to program the first one of the plurality of memory cells in the predetermined sequence based on the first loop initial value, to calculate a second number of program loops to program the second one of the plurality of memory cells in the predetermined sequence based on the first loop initial value, and to determine the loop offset value based on a difference between the first number of program loops and the second number of program loops to substantially equalize respective programming times for the first and second ones of the plurality of memory cells.
 17. The device of claim 12, further comprising: a first storage circuit configured to provide the first loop initial value to the add-subtract circuit; and a second storage circuit configured to provide the loop offset value to the add-subtract circuit.
 18. The device of claim 17, wherein the first storage circuit comprises one or more fuses and/or registers configured to provide the first loop initial value, and wherein the second storage circuit comprises one or more fuses and/or registers configured to provide the loop offset value.
 19. The device of claim 11, further comprising: a match circuit configured to provide a signal to the add-subtract circuit indicating a location of the second one of the plurality of memory cells in the memory cell array, wherein the add-subtract circuit is configured to provide the second loop initial value based on the location of the second one of the plurality of memory cells in the memory cell array.
 20. The device of claim 19, wherein the plurality of memory cells comprises a plurality of NAND flash memory cells in a string arrangement between first and second select transistors, and wherein the second one of the plurality of memory cells is immediately adjacent to the first select transistor and/or the second select transistor. 21.-45. (canceled) 